AMIGAOS-RELATED INFORMATION ABOUT ISTAR
Istar's control screen takes the same resolution and frequency as WorkBench
screen (maybe can change that in later versions). The depth is 3, that is
8 colours.
Most panels on this screen are sized to be a certain proportion of the
screen, so they should always look the same size, whatever resolution is
used. In addition, most gadgets are sized and positioned in proportion, so
should always look the same size and position. The exception to this
appears to be the CheckBox gadget, which seems always to be 26 pixels wide.
However, the font used does not change - at present version. It is
designed to look OK on a PAL screen and uses topaz 8 font. But it does not
look so good on a VGA or DBLPAL screen. I hope to change this soon.
The AmigaOS exec routine Forbid() turns off multitasking, until Permit() is
called to turn it back on again. This, of course, can be dangerous, so
these routines are only supposed to be used for very short, temporary
periods in which no errors are possible - usually only a couple of lines of
simple code.
Istar uses Forbid() and Permit() for the following purposes:
- When allocating memory for a knowledge base (either brand new or
loaded from a file or, when possible, cloned) the IRKit system on which
Istar is built first looks to see what the largest chunk of memory
available is. To ensure that information doesn't get out of date before we
attempt to allocate the memory needed, it temporarily pauses multitasking
while doing so.
- When removing a window, it must be done safely, such that all messages
queued for the window must be replied to and removed, the IDCMP flags must
be reset, and the port removed, and all must be done while there is no
chance of new messages arriving. So multitasking is inhibited during this
operation. The code used follows that officially recommended.
- (Note: Istar currently does not make use of this facility.) When
grabbing a KB that is in use by another program, the IRKit system, on which
Istar is built, inhibits multitasking temporarily so that the KB is not
deleted or moved by the other program before Istar grabs it.
- (Note: Istar currently does not make use of this facility.) When a
sprite is removed, we inhibit multitasking while we set the address of the
sprite to NULL. (Actually, I don't know why we need do this as it's only
one instruction.)
- (Note: Istar currently does not make use of this facility, but
Annotator does.) To create a dual-playfield screen, multitasking is
ibhibited while adding the extra raster (RasInfo) to the ViewPort and also
setting the DUALPF flag. And also for the reverse process. This is the
official way of making and removing a dual-playfield screen.
Copyright (c) Andrew
Basden 1999.